﻿using System;
using Web7.Configuration;
using Web7.Extensions;

namespace Web7.RouteUrlModifiers
{
    /// <summary>
    /// RouteUrl修改器
    /// </summary>
    public class RouteUrlModifier : IRouteUrlModifier
    {
        private string _routeUrlPrefix;

        public RouteUrlModifier(AppSettingsHelper appSettingsHelper)
        {
            this._routeUrlPrefix = appSettingsHelper.GetString("RouteUrlPrefix",null);
            if (!_routeUrlPrefix.IsNullOrWhiteSpace()&&!_routeUrlPrefix.IsSubDirectory())
                throw new InvalidOperationException("RouteUrlPrefix is not a sub direcotory.");
        }

        #region IRouteUrlModifier Members

        /// <summary>
        /// 修改RouteUrl
        /// </summary>
        /// <param name="baseRouteUrl">原始RouteUrl</param>
        /// <returns>修改后RouteUrl</returns>
        public string ModifyUrl(string baseRouteUrl)
        {
            if (_routeUrlPrefix.IsNullOrWhiteSpace())
                return baseRouteUrl;
            else if (!baseRouteUrl.IsNullOrWhiteSpace())
                return _routeUrlPrefix + "/" + baseRouteUrl;
            else
                return _routeUrlPrefix;
        }

        #endregion
    }
}
